
package org.charts.advanced;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.kold.graphics.interfaces.Chart;
import org.charts.objects.DataPie;

/** @Author : Daniel Andres Castillo Pedroza */

public class PieGraphics3D implements Chart {
    
    /** @Atributos de la clase PieGraphics */
    
    private JFreeChart grafico;
    private DefaultPieDataset dataSet;
    private PiePlot plot;
    private String titulo;
    private boolean leyenda, url;
    private boolean informacion;
    private Font fontEtiqueta;
    private Color colorPanel;
    private Color colorEtiqueta;
    private Color colorGrafica;
    
    /** @Constructores de la clase PieGraphics */
    
    public PieGraphics3D() {
      this.configuracionDefecto();
    }
    
    public PieGraphics3D(String titulo) {
      this.configuracionDefecto(); this.tituloGrafico(titulo);
    }
    
    /** @Metodos de Implementacion de la clase PieGraphics */
    
    public JFreeChart getChart() {
      return this.grafico;
    }
    
    public Image getImage() {
      return this.grafico.getBackgroundImage();
    }
    
    /** @Metodos de la clase PieGraphics */
    
    private void configuracionDefecto() {      
      titulo = "Grafica de Torta de Plugin Kold";
      leyenda = true; colorPanel = Color.ORANGE;
      informacion = true; colorGrafica = Color.WHITE;
      url = true; colorEtiqueta = Color.ORANGE;
      fontEtiqueta = new Font("Tahoma",Font.PLAIN,12);
      dataSet = new DefaultPieDataset();
    }
    
    public void tituloGrafico(String titulo) {
      this.titulo = titulo;
    }
    
    public void colorPanel(Color color) {
      this.colorPanel = color;
    }
    
    public void colorGrafico(Color color) {
      this.colorGrafica = color;
    }
    
    public void colorEtiqueta(Color color) {
      this.colorEtiqueta = color;
    }
    
    public void fuenteEtiqueta(Font fuente) {
      this.fontEtiqueta = fuente;
    }
    
    public void añadirValor(String rotulo, Number valor) {
      this.dataSet.setValue(rotulo,valor);
    }
    
    public void añadirValor(DataPie object) {
      try {
        String rotulo = object.getTag();
        Number valor = object.getValue();
        this.dataSet.setValue(rotulo,valor);}
      catch (NullPointerException ex) {}
    }
    
    public void graficoTransparente(float alpha) {
      if((alpha >= 0.1) && (alpha <= 1.0)) {
        plot.setForegroundAlpha(alpha);}
    }
    
    public void construirGrafico() {
      grafico = ChartFactory.createPieChart(titulo,
           dataSet,leyenda,informacion,url);
      grafico.setBackgroundPaint(colorPanel);
      plot = (PiePlot) grafico.getPlot();
      plot.setLabelBackgroundPaint(colorEtiqueta);
      plot.setBackgroundPaint(colorGrafica);
      plot.setLabelFont(fontEtiqueta);
    }

    @Override
    public void setTitle(String title) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void setBackground(Color color) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void setColorChart(Color color) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void createChart() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}